﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using UrnaVirtual.Presentacion.Models;

namespace UrnaVirtual.Presentacion.Controllers
{
    public class HomeController : Controller
    {
        private Models.UrnaVirtualEntities context = new Models.UrnaVirtualEntities();
        [HttpGet]
        public ActionResult Index()
        {
            var model = new VotoViewModel();
            model.Candidatos = context.Candidatos.ToList();
            
            return View("Index",model);
        }

        [HttpPost]
        public ActionResult Index(FormCollection fields, int DNI)
        {
            var selectedOption = int.Parse(fields[1]);//Seleccionando el candidato

            var model = new VotoViewModel();
            model.DNI = DNI;
            model.Selected = selectedOption;
            if (!ModelState.IsValid)
            {
                return View("Index", model);
            }



            //validando si el dni existe en la base. Si existe: trae al votante, si no exite: trae null
            var votante = context.Votantes.SingleOrDefault(v => v.DNI ==(DNI));
            if (votante != null)//El votante esta en la base
            {
                
                                
                var cand = context.Candidatos.SingleOrDefault(c => c.Id == selectedOption);
                cand.CantidadVotos++;//sumando un voto
                votante.Voto = true;//modificando al votante el campo voto
                context.SaveChanges();//guarda los datos en la base
                return View ("VotoSi");
            }
            else//el votante no esta en la base
            { 
                //alert que diga: el votante no existe
                return View("VotoNo");
            }
            
            
            

            return RedirectToAction("Index");
        }

        public ActionResult Report()
        { 
            var model = context.Candidatos.ToList();

            return PartialView("_Report", model);
        }

      
        //public ActionResult About()
        //{

        //    //var nuevoCandidato = new Models.Candidato();
        //    //nuevoCandidato.Nombre = "gise";
        //    //context.Candidatos.Add(nuevoCandidato);
        //    //context.SaveChanges();



        //    ViewBag.Message = "Your app description page.";

        //    return View();
        //}

        //public ActionResult Contact()
        //{
        //    ViewBag.Message = "Your contact page.";

        //    return View();
        //}
    }
}
